"""Definition of the Normativa content type
"""

from AccessControl import ClassSecurityInfo

from zope.interface import implements, directlyProvides

from Products.Archetypes import atapi
from Products.ATContentTypes.content import base
from Products.ATContentTypes.content import schemata

from guegue.alcaldias import alcaldiasMessageFactory as _
from guegue.alcaldias.interfaces import INormativa
from guegue.alcaldias.config import PROJECTNAME

NormativaSchema = schemata.ATContentTypeSchema.copy() + atapi.Schema((

    # -*- Your Archetypes field definitions here ... -*-
    atapi.StringField('title',
                searchable=1,
                isMetadata=0,
                accessor='Title',
                widget=atapi.StringWidget(label='Nombre',
                                      maxlength=150,
                                      size=30,
                                      label_msgid="label_entry_title",
                                      description_msgid="help_entry_title",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('description',
                searchable=1,
                isMetadata=0,
                accessor='Description',
                widget=atapi.TextAreaWidget(label='Breve descripción',
                                      label_msgid="label_entry_description",
                                      description_msgid="help_entry_description",
                                      i18n_domain="guegue.alcaldias",
                                      description='Entre una breve descripción.')),
    atapi.DateTimeField('fecha',
                searchable=0,
                required=0,
                widget=atapi.CalendarWidget(label='Fecha de Publicación',
                                      label_msgid="label_entry_fecha",
                                      show_hm = False,
                                      description_msgid="help_entry_fecha",
                                      i18n_domain="guegue.alcaldias",
                                      description='Fecha de publicación')),
    atapi.StringField('estado',
                searchable=1,
                isMetadata=0,
                vocabulary=['Vigentes','Inactivas','En Proyecto'],
                widget=atapi.SelectionWidget(label='Estado',
                        label_msgid='label_entry_estado',
                        description_msgid='help_entry_estado',
                        i18n_domain='guegue.alcaldias',
                        description='')),
    atapi.StringField('ambito',
                searchable=1,
                isMetadata=0,
                vocabulary=['Municipal','Departamental','Nacional'],
                widget=atapi.SelectionWidget(label='Ámbito',
                        label_msgid='label_entry_ambito',
                        description_msgid='help_entry_ambito',
                        i18n_domain='guegue.alcaldias',
                        description='')),
    atapi.StringField('tipo',
                searchable=1,
                isMetadata=0,
                vocabulary=['Acuerdo','Decreto','Resolucion','Ordenanza','Bando', 'Ley'],
                widget=atapi.SelectionWidget(label='Tipo',
                        label_msgid='label_entry_tipo',
                        description_msgid='help_entry_tipo',
                        i18n_domain='guegue.alcaldias',
                        description='')),
    atapi.TextField('body',
              searchable=1,
              required=0,
              primary=1,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Contenido de la Normativa',
                                label_msgid="label_entry_body",
                                description_msgid="help_entry_body",
                                i18n_domain="guegue.alcaldias",
                                description="Descripción completa.")),
    atapi.FileField('adjunto',
              searchable=0,
              required=0,
              widget=atapi.FileWidget(label='Adjuntar Normativa',
                                label_msgid="label_entry_adjunto",
                                description_msgid="help_entry_adjunto",
                                i18n_domain="guegue.alcaldias",
                                description='Puede adjuntar un archivo con el normativa completo.')),
))

# Set storage on fields copied from ATContentTypeSchema, making sure
# they work well with the python bridge properties.

#NormativaSchema['title'].storage = atapi.AnnotationStorage()
#NormativaSchema['description'].storage = atapi.AnnotationStorage()

schemata.finalizeATCTSchema(NormativaSchema, moveDiscussion=False)

class Normativa(base.ATCTContent):
    """Tipo de datos para normativaes"""
    implements(INormativa)

    portal_type = "Normativa"
    schema = NormativaSchema

    security = ClassSecurityInfo()

#    security.declareProtected(View, 'tag')
    def tag(self, **kwargs):
        """Generate image tag using the api of the ImageField
        """
        #if 'title' not in kwargs:
        #    kwargs['title'] = self.getImageCaption()
        return self.getField('image').tag(self, **kwargs)

    #title = atapi.ATFieldProperty('title')
    #description = atapi.ATFieldProperty('description')

atapi.registerType(Normativa, PROJECTNAME)
